package actions.authenticator;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.EntityManager;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.security.Identity;

import utils.Profiles;
import utils.Propiedades;

import domain.Restaurante;
import domain.Usuario;

@Name("authenticator")
@Scope(ScopeType.SESSION)
public class AuthenticatorAction implements Serializable {

	private static final long serialVersionUID = -7550614093934026752L;

	@In
	EntityManager em;

	@In(required = false)
	org.jboss.seam.security.Identity identity;

	@Out(required = false, scope = ScopeType.SESSION)
	Usuario usuarioAutenticado = new Usuario();

	@Out
	Date fechaActual = new Date();

	@Out(required = false)
	// Restaurante del propietario
	Restaurante myRestaurant = new Restaurante();

	public boolean authenticate() {

		if (Identity.instance().isLoggedIn())
			return true; // Ya está autenticado

		usuarioAutenticado = em.find(Usuario.class, identity.getUsername());
		if (usuarioAutenticado != null) {
			if (usuarioAutenticado.getPassword().equals(identity.getPassword()))
				return true;

		}

		return false;
	}

	public String rutaInicio() {

		if (usuarioAutenticado.getPerfil().getNombre().equals(
				Profiles.PROFILE_CLIENTE))
			return Propiedades.getInstance().getPropiedad("paginaInicioCustomer");
		
		if (usuarioAutenticado.getPerfil().getNombre().equals(
				Profiles.PROFILE_ADMIN)) {

			return Propiedades.getInstance().getPropiedad("pagInicioAdmin");
		}

		// propietario sin restaurante aún registrado
		if (usuarioAutenticado.getPerfil().getNombre().equals(
				Profiles.PROFILE_OWNER))
			return Propiedades.getInstance().getPropiedad("pagInicioOwner");

		// propietario con restaurante asignado
		myRestaurant = usuarioAutenticado.getPerfil().getRestaurante();
		return Propiedades.getInstance().getPropiedad("pagInicioRegistrar");

	}

	public String getRutaInicio() {
		return rutaInicio();
	}

	public String logout() {
		Identity.instance().logout();
		return "login";
	}

}
